// -----------------------------
// Author: 		Dhaenens Gert 
// Creation: 	2/17/2015 9:15:25 PM				
// -----------------------------

#ifndef _CommandHandler_h
#define _CommandHandler_h

#include "Common.h"

namespace Flow
{

	template<typename T>
	class CommandHandler
	{
	public:

		void			ProcessCommands(ProcessOption::Enum option);

	protected:

		CommandHandler();
		virtual ~CommandHandler();

		void			PushCommand(T* lpCommand);

		virtual void	ProcessSingleCommand(T* lpCommand) = 0;

	private:

		queue<T*>		m_CommandQueue;

	};

}

#include "CommandHandler.inl"
#endif